// 给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串，判断字符串是否有效。有效字符串需满足：
// 左括号必须用相同类型的右括号闭合。
// 左括号必须以正确的顺序闭合。

// 思路，使用栈的思路，操作栈顶

function isValid(s) {
    if (s.length % 2 === 1) {
        return false
    }
    let stack = []
    for (let i = 0; i < s.length; i++) {
        switch (s[i]) {
            case '(':
                stack.push(')')
                break;
            case '[':
                stack.push(']')
                break
            case '{':
                stack.push('}')
                break
            default:
                if (s[i] !== stack.pop()) {
                    return false
                }
        }
    }
    return true
}

let str = '{[({})]}'
console.log(isValid(str));